package modelo;

import java.util.Date;
import java.util.Vector;

import javax.swing.text.StyledEditorKit.BoldAction;

public class Linea {

	protected int numero;
	protected Date fechaContrato;
	protected Usuario usuario;
	protected Vector<Consumo> misConsumos;
	protected boolean borrado;
	protected Plan plan;
	
	private static int proximoNumero;
	private static int numeroInical = 1111111111;
	
	public static int getProximoNumero(){
		return ++proximoNumero;
	}
	
	public Linea(Usuario usuario, Date fechaContrato, Plan plan ,boolean borrado) {
		this.numero = numeroInical + getProximoNumero();
		this.fechaContrato = fechaContrato;
		this.usuario = usuario;
		misConsumos = new Vector<Consumo>();
		this.borrado = borrado;
		this.plan = plan;
			
	}

	
	public boolean isBorrado() {
		return borrado;
	}

	public void setBorrado(boolean borrado) {
		this.borrado = borrado;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

	public Date getFechaContrato() {
		return fechaContrato;
	}

	public void setFechaContrato(Date fechaContrato) {
		this.fechaContrato = fechaContrato;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public void addConsumo(Consumo c) {
		misConsumos.add(c);
	}
	
	public Vector<Consumo> getConsumos() {
		return misConsumos;
	}

	public boolean esPrincipal(){
		return true;
	}
	
	
	
	public Plan getPlan() {
		return plan;
	}

	public void setPlan(Plan plan) {
		this.plan = plan;
	}

	public String obtenerConsumos (){
		String consumo="";
		for (int i = 0;i<misConsumos.size();i++){
			consumo+=misConsumos.elementAt(i).toString();
		}
		if(consumo.equals("")){
			return "VACIO";
		}else{
			return consumo;
		}
		
	}
	
	public LineaView obtenerViewLinea(){
		
		LineaView lv = new LineaView(numero,fechaContrato,usuario,plan,borrado);
		return lv;
	}
	
	public Vector toVector(){
		Vector v = new Vector();
		LineaView lv = new LineaView(numero,fechaContrato,usuario,plan,borrado);
		
		v.add(lv.getNumero());
		v.add(lv.getUsuario().getDni());
		v.add(lv.getUsuario().getNombre());
		v.add(lv.getUsuario().getApellido());
		v.add(lv.getPlan().getNombre());
		return v;
	}
	
	public Vector toVector2(){
		Vector v = new Vector();
		LineaView lv = new LineaView(numero,fechaContrato,usuario,plan,borrado);
		
		v.add(lv.getNumero());
		v.add(lv.getUsuario().getDni());
		v.add(lv.getUsuario().getNombre());
		v.add(lv.getUsuario().getApellido());
	//	v.add(lv.getPlan().getNombre());
		return v;
	}
	
	
	public float calcularConsumosTotal(int periodo, int anio){
		float total = 0;
		for (int i=0;i<misConsumos.size();i++){
			total = total + misConsumos.elementAt(i).calcularConsumo(periodo, anio);
		}
		return total;
	}
	
	public float calcularConsumoSms(int periodo, int anio){
		float total = 0;
		for (int i=0;i<misConsumos.size();i++){
			if (misConsumos.elementAt(i).getServicio().getTipo() == 3){
				total = total + misConsumos.elementAt(i).calcularConsumo(periodo, anio);	
			}
		}
		return total;
		
	}
	
	public float calcularConsumoDatos(int periodo, int anio){
		float total = 0;
		for (int i=0;i<misConsumos.size();i++){
			if (misConsumos.elementAt(i).getServicio().getTipo() == 2){
				total = total + misConsumos.elementAt(i).calcularConsumo(periodo, anio);	
			}
		}
		return total;
		
	}

	public float calcularConsumoVoz(int periodo, int anio){
		float total = 0;
		for (int i=0;i<misConsumos.size();i++){
			if (misConsumos.elementAt(i).getServicio().getTipo() == 1){
				total = total + misConsumos.elementAt(i).calcularConsumo(periodo, anio);	
			}
		}
		return total;
		
	}
	
}
